Media Capture and Streams API (Media Stream) 也可以稱為 MediaStream API,他代表著音訊與視訊的媒體流。其中我們可以先了解:各種音訊或視頻 tracks。每個 MediaStream 可以包含多個 MediaStreamTrack,也就是你可以把音訊、視訊等多種媒體數據放在同一個 MediaStream 裡,方便管理和處理。
MDN 上的描述 MediaStream 就像是一條管道,這條管道有一個進口和一個出口。依照不同情境:
getUserMedia() 生成的 MediaStream 就像是這條管道的起點,它的進口可以是你的相機或麥克風。MediaDevices interface 可以存取硬體資源輸入的設備:舉凡麥克風、螢幕分享、相機……等
其中的 methods getUserMedia() 可以透過瀏覽器提示獲得用戶許可,打開硬體的的鏡頭和或麥克風,並提供包含視頻軌道和或音頻軌道的 MediaStream 。
constraints 可以指定要讀取的硬體設備有哪些,解析度、幀率、前置鏡頭或後置鏡頭
const constraints = {
  audio: true,
  video: true,
}
getUserMedia(constraints)
// 限制其最低解析度為 1280x720
getUserMedia({
  audio: true,
  video: {
    width: { min: 1280 },
    height: { min: 720 },
  },
});
const constraints = {
    audio: true,
    video: true,
  }
  async function getMedia(constraints) {
    let stream = null;
  
    try {
      stream = await navigator.mediaDevices.getUserMedia(constraints);
      console.log(stream)
    } catch (err) {
      console.log(err)
    }
  }
  
  getMedia(constraints)
若沒有允許或封鎖過該網站會跳出詢問框,沒有跳出的人可以再瀏覽器設定移除過去的詢問紀錄


id: "589daf18-1627-4e22-8306-dfb96b9166c0":每個媒體流都有一個唯一的識別ID。active: true:表示這個媒體流目正在捕獲視訊和音訊數據。addTrack(), clone(), getAudioTracks(), getTrackById(), getTracks(), getVideoTracks(), removeTrack():這些方法可以用於管理媒體流中的軌道(音訊或視訊軌道)。addEventListener(), dispatchEvent(), removeEventListener(): 這些方法可以用於添加、觸發和移除事件監聽器,以處理與媒體流相關的事件。DOMException: Permission denied 的消息
參考資料
Media Capture and Streams API (Media Stream) - Web APIs | MDN (mozilla.org)
MediaDevices - Web APIs | MDN (mozilla.org)
MediaDevices: getUserMedia() method - Web APIs | MDN (mozilla.org)